package dao;

import org.apache.ibatis.annotations.Param;
import pojo.Student;

import java.util.HashMap;
import java.util.List;

public interface StudentDao {
//    在MyBatis操作中:
//    1、如果操作方法只有一个参数
//    (1)如果操作方法只有一个简单类型或者字符串,在Mapper配置中通过#{str}直接获取,"str"可以取任意名字,一般取java代码中的属性名;
//    (2)如果操作方法有一个对象类型的参数,在Mapper配置中通过#{attrName}获取对象的指定属性值,attrName是对象的属性名,必须是参数对象的属性;
//    2、如果操作方法有多个参数
//    (1)如果操作方法有一个Map类型的参数,在Mapper配置中通过#{key}获取对应的value;
//    (2)如果操作方法有多个参数,不使用Map时:
//      第一种:使用#{param1} ,#{param2}或者#{arg0} ,#{arg1};
//      第二种:使用@Param("start") int start, @Param("pageSize") int pageSize.

    public int insertStudent(Student student);

    public int insertStudent2(Student student);

    public int deleteStudent(String stuNum);

    public int updateStudent(Student student);

    public List<Student> selectStudent();


    public Student queryStudent(String stuNum);

    public int getCount();

    //分页查询
    //HashMap传值
    public List<Student> pageStudent(HashMap<String, Integer> map);

    //   #{param1} ,#{param2}或者#{arg0} ,#{arg1}
    public List<Student> pageStudent2(int start, int pageSize);

    //PageHelper查询，带性别条件
    public List<Student> selectStudentByGender(String gender);

    //取别名
    //Mapper中与@Param(arr)中的arr一致,int后面的参数(这里是start)的名字随意,一般两个取相同.
    public List<Student> pageStudent3(@Param("start") int start, @Param("pageSize") int pageSize);

}
